home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
fish
/
726-750
/
729
/
bbbbs
/
bbbbs54.lzh
/
rexx
/
bbsMAINT.baud
< prev
next >
Wrap
Text File
|
1991-12-27
|
3KB
|
116 lines
/* $VER: 4.3 bbsMAINT.baud 28 December 1991 (28.12.91)
copyright 1990-91 Richard Lee Stockton FREELY DISTRIBUTABLE
this will check all message dirs for oldest messages, (that don't
have '!!' as the first characters), and delete a few (1%) of them
This macro is called after logout IF the grand total of messages
exceeds the maximum set in the CONFIG.BBS file. Note that as of 4.0
messages are copied to the sysop's email drawer before deletion.
*/
bbspath=GETCLIP('BBS_path')
msgpath=GETCLIP('BBS_msgpath')
ARG MAX_MSGS sysop . /* sent from BBBBS.baud. MAX_MSGS=SYSTEM_MSG_LIMIT */
CALL CLOSE(STDOUT)
CALL OPEN(STDOUT,'RAM:bbsMAINT.STDOUT','W')
totmsgs=0
DO i=1 TO 99
totmsgs=totmsgs+WORDS(SHOWDIR(msgpath'MSG'i))
END
IF totmsgs<MAX_MSGS THEN EXIT(0);
tot2kill=MAX_MSGS%100
IF tot2kill<1 THEN tot2kill=1
tot2kill=tot2kill+totmsgs-MAX_MSGS
msgs.=99999999
DO i=1 TO 99
thisconf=msgpath'MSG'i
IF ~EXISTS(thisconf) THEN ITERATE i
lowmsg=countcheck('FirstMessage'i)
himsg=countcheck('LastMessage'i)
DO j=lowmsg TO himsg
IF ~EXISTS(thisconf'/'j) THEN ITERATE j
x=OPEN(f,thisconf'/'j,'R')
IF x<1 THEN ITERATE j
line=READLN(f)
IF LEFT(line,2)~='!!' THEN
DO
line=READLN(f)
line=READLN(f)
line=READLN(f)
line=READLN(f)
CALL CLOSE(f)
dateline=SPACE(WORD(line,3) WORD(line,4) WORD(line,5),1)
seqdate=norm2seq(dateline)
IF seqdate>=msgs.tot2kill THEN ITERATE i
DO k=tot2kill TO 1 BY -1
IF seqdate>msgs.k THEN LEAVE k
kk=k+1
msgs.kk=msgs.k
msgs.kk.0=msgs.k.0
msgs.k=seqdate
msgs.k.0=i'/'j
END
END
CALL CLOSE(f)
END
END
DO i=1 TO tot2kill
IF msgs.i=99999999 THEN ITERATE i
x=OPEN(f,msgpath'MSG'msgs.i.0,'R')
IF x=0 THEN ITERATE i
data=READCH(f,65000)
CALL CLOSE(f)
CALL DELAY(28)
mailname='MSG'TRANSLATE(msgs.i.0,'.','/')
x=OPEN(f,bbspath'Email/'sysop'/'mailname,'W')
IF x=0 THEN ITERATE i
CALL WRITECH(f,data)
CALL CLOSE(f)
CALL DELETE(msgpath'MSG'msgs.i.0)
END
EXIT(0);
countcheck:
PARSE ARG filename
IF filename='' THEN RETURN;
filename=bbspath'Numbers/'filename
x=OPEN(f,filename,'R')
IF x<1 THEN RETURN(1);
cc=READLN(f)
CALL CLOSE(f)
RETURN(cc);
norm2seq: /* takes '3 Jan 1990' and turns it into '19900103' */
ARG da' 'mo' 'yr .
da=da/1
mo=STRIP(mo)
yr=yr/1
IF da<10 THEN da='0'da
SELECT
WHEN mo='JAN' THEN mo='01'
WHEN mo='FEB' THEN mo='02'
WHEN mo='MAR' THEN mo='03'
WHEN mo='APR' THEN mo='04'
WHEN mo='MAY' THEN mo='05'
WHEN mo='JUN' THEN mo='06'
WHEN mo='JUL' THEN mo='07'
WHEN mo='AUG' THEN mo='08'
WHEN mo='SEP' THEN mo='09'
WHEN mo='OCT' THEN mo='10'
WHEN mo='NOV' THEN mo='11'
WHEN mo='DEC' THEN mo='12'
OTHERWISE RETURN(-1);
END
RETURN(yr||mo||da);
/* bbsMAINT.baud */